<template>
  <el-card style="margin-bottom:20px;">
    <div slot="header" class="clearfix">
      <span>关于我</span>
    </div>

    <div class="user-profile">
      <div class="box-center">
        <pan-thumb :image="user.avatar" :height="'100px'" :width="'100px'" :hoverable="false">
          <div>你好</div>
          {{ user.role }}
        </pan-thumb>
      </div>
      <div class="box-center">
        <div class="user-name text-center">{{ user.name }}</div>
        <div class="btn" @click="showCutter=true">上传图片<i class="el-icon-upload el-icon--right" /></div>
      </div>
    </div>
    <avatar-cutter
      v-if="showCutter"
      return-type="file"
      @cancel="showCutter = false"
      @enter="uploadAvatar"
    />
  </el-card>
</template>

<script>
import PanThumb from '@/components/PanThumb'
import AvatarCutter from '@/components/AvatarCutter'
import { create } from '@/api/file'
import { updateAvatar } from '@/api/user'

export default {
  components: { PanThumb, AvatarCutter },
  props: {
    user: {
      type: Object,
      default: () => {
        return {
          name: '',
          email: '',
          avatar: '',
          roles: ''
        }
      }
    }
  },
  data() {
    return {
      showCutter: false, // 是否显示头像裁剪组件
      token: ''
    }
  },
  methods: {
    // 上传裁剪好的头像
    uploadAvatar(file) {
      this.showCutter = false
      var formData = new FormData()
      formData.append('file', file)
      // 上传图片
      create(formData).then((res) => {
        updateAvatar({ avatar: res.data }).then((response) => {
          console.log(response)
          this.$message({
            type: 'success',
            message: '头像更换成功!'
          })
        })
        this.user.avatar = res.data
        this.$store.dispatch('user/setAvatar', res.data)
      }).catch(err => {
        this.$message({
          type: 'info',
          message: '头像更换失败'
        })
        console.log(err)
      }).finally(() => { })
    }
  }
}
</script>

<style lang="scss" scoped>
 .box-center {
   margin: 0 auto;
   display: table;
 }

 .text-muted {
   color: #777;
 }

 .user-profile {
   .user-name {
     font-weight: bold;
   }

   .box-center {
     padding-top: 10px;
   }

   .user-role {
     padding-top: 10px;
     font-weight: 400;
     font-size: 14px;
   }

   .box-social {
     padding-top: 30px;

     .el-table {
       border-top: 1px solid #dfe6ec;
     }
   }

   .user-follow {
     padding-top: 20px;
   }
 }

 .user-bio {
   margin-top: 20px;
   color: #606266;

   span {
     padding-left: 4px;
   }

   .user-bio-section {
     font-size: 14px;
     padding: 15px 0;

     .user-bio-section-header {
       border-bottom: 1px solid #dfe6ec;
       padding-bottom: 10px;
       margin-bottom: 10px;
       font-weight: bold;
     }
   }
 }
 .btn {
    display: block;
    margin: 0 auto;
    width: 100px;
    height: 30px;
    line-height: 30px;
    font-size: 13px;
    color: white;
    border-radius: 4px;
    text-align: center;
    box-sizing: border-box;
    background-color: #3D8AC7;
  }
</style>
